home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 April / Macworld (1999-04).dmg / Serious Software / GrooveMaker demo / GrooveMaker Demo / Media / Synth.dxr / 00189_Field_buttare2.txt < prev    next >
Text File  |  1998-07-27  |  31KB  |  746 lines

  1. on keyDown
  2.   global gOnSynth, gArp, gPosVolSynth, gPosPanSynth, gProg, gSynthSel, gOn, gTraccia, gPag, gOn, gRandom, gBpmSong, gPath, gWav, gSynthSel
  3.   global keyNoteList, folderSynthList, scaleList, synthList, arpList, progList, stateTrackList, volValList, volPosList, virTrackList
  4.   
  5.   if gOn and not(the visible of sprite 76) and (folderSynthList <> []) and not(the visible of window "help") then
  6.     case(the keyCode) of
  7.         
  8.       18,19: -- click su 1 (non del tastierino numerico) <-> diminuisce il synth selezionato di 1  
  9.         -- click su 2 (non del tastierino numerico) <-> aumenta il synth selezionato di 1 
  10.         put getPos(folderSynthList,field "fieldSynth") into pos
  11.         if the keyCode = 19 then
  12.           if pos = count(folderSynthList) then 
  13.             set pos = 1
  14.           else
  15.             set pos = pos + 1
  16.           end if
  17.         else
  18.           if pos = 1 then 
  19.             set pos = count(folderSynthList)
  20.           else
  21.             set pos = pos - 1
  22.           end if
  23.         end if
  24.         put getAt(folderSynthList,pos) into field "fieldSynth"        
  25.         set the font of member "fieldSynth" to "GMFont"
  26.         set the foreColor of member "fieldSynth" to 14 
  27.         if gOnSynth then IKSynthStop
  28.         IKSetSynth gPath & "synth:synth" & gWav & ":" & field "fieldSynth" & ":"      
  29.         -- calcolo arp
  30.         case(getPos(arpList,gArp)) of
  31.           1,2,3,4:set arp = integer(chars(gArp,3,length(gArp)))/4
  32.           otherwise
  33.             set arp = 4
  34.         end case 
  35.         
  36.         -- vol e pan
  37.         IKSynthVolume integer(128*(-gPosVolSynth+54)/45)
  38.         IKSynthPan integer(128*(-gPosPanSynth+54)/45)
  39.         
  40.         if synthList <> [] then IKSynthArp getPos(progList,gProg)-1,arp,createSeq()
  41.         -- se c'√® l'hilite intorno ai marker sparisce
  42.         if gSynthSel then 
  43.           set the locH of sprite 74 to -20
  44.           set gSynthSel = 0
  45.         end if
  46.         
  47.        20,21: -- click su 3 (non del tastierino numerico) <-> diminuisce l'arp selezionato di 1  
  48.         -- click su 4 (non del tastierino numerico) <-> aumenta l'arp selezionato di 1 
  49.         put getPos(arpList,field "fieldArp") into pos
  50.         if the keyCode = 21 then
  51.           if pos = count(arpList) then 
  52.             set pos = 1
  53.           else
  54.             set pos = pos + 1
  55.           end if
  56.         else
  57.           if pos = 1 then 
  58.             set pos = count(arpList)
  59.           else
  60.             set pos = pos - 1
  61.           end if
  62.         end if
  63.         put getAt(arpList,pos) into field "fieldArp"        
  64.         set the font of member "fieldArp" to "GMFont"
  65.         set the foreColor of member "fieldArp" to 14 
  66.         
  67.         set gArp = field "fieldArp"
  68.         
  69.         case(getPos(arpList,gArp)) of
  70.           1,2,3,4:set arp = integer(chars(gArp,3,length(gArp)))/4
  71.           otherwise
  72.             set arp = 4
  73.         end case 
  74.         
  75.         -- se la sequenza sta suonando si aggiorna
  76.         if gOnSynth then
  77.           -- vol e pan
  78.           IKSynthVolume integer(128*(-gPosVolSynth+54)/45)
  79.           IKSynthPan integer(128*(-gPosPanSynth+54)/45)
  80.           IKSynthArp getPos(progList,gProg)-1,arp,createSeq()
  81.         end if
  82.         
  83.         -- se c'√® l'hilite intorno ai marker sparisce
  84.         if gSynthSel then 
  85.           set the locH of sprite 74 to -20
  86.           set gSynthSel = 0
  87.         end if
  88.         
  89.       23: -- click su 5 (non del tastierino numerico) <-> aumenta il prog selezionato di 1  
  90.         put getPos(progList,field "fieldProg") into pos
  91.         if pos = count(progList) then 
  92.           set pos = 1
  93.         else
  94.           set pos = pos + 1
  95.         end if
  96.         put getAt(progList,pos) into field "fieldProg"        
  97.         set the font of member "fieldProg" to "GMFont"
  98.         set the foreColor of member "fieldProg" to 14
  99.         set gProg = field "fieldProg"
  100.         -- se la sequenza sta suonando si aggiorna
  101.         -- calcolo arp
  102.         case(getPos(arpList,gArp)) of
  103.           1,2,3,4:set arp = integer(chars(gArp,3,length(gArp)))/4
  104.           otherwise
  105.             set arp = 4
  106.         end case 
  107.         if gOnSynth then
  108.           -- vol e pan
  109.           IKSynthVolume integer(128*(-gPosVolSynth+54)/45)
  110.           IKSynthPan integer(128*(-gPosPanSynth+54)/45)
  111.           IKSynthArp getPos(progList,gProg)-1,arp,createSeq()
  112.         end if
  113.         
  114.         -- se c'√® l'hilite intorno ai marker sparisce
  115.         if gSynthSel then 
  116.           set the locH of sprite 74 to -20
  117.           set gSynthSel = 0
  118.         end if
  119.         
  120.       22:                    -- click su 6 <-> diminuisce volume
  121.         if gOn then
  122.           if gPosVolSynth < 54 then
  123.             set the locV of sprite 45 = the locV of sprite 45 + 1
  124.             set gPosVolSynth = the locV of sprite 45
  125.             IKSynthVolume integer(128*(-gPosVolSynth+54)/45)
  126.             updateStage
  127.           end if
  128.         end if
  129.         
  130.       26:                        -- click su 7 <-> aumenta volume
  131.         if gOn then
  132.           if gPosVolSynth > 9 then
  133.             set the locV of sprite 45 = the locV of sprite 45 - 1
  134.             set gPosVolSynth = the locV of sprite 45
  135.             IKSynthVolume integer(128*(-gPosVolSynth+54)/45)
  136.             updateStage
  137.           end if
  138.         end if
  139.         
  140.     end case
  141.   end if
  142.   
  143.   -- controllo che il tasto premuto sia nella keyNoteList  
  144.   set tasto = the keyPressed
  145.   if not(findPos(keyNoteList,tasto) = 0) then
  146.     if gOn and (IKGetCurrentBeat() <> -1) and (folderSynthList <> []) and not(the visible of window "help") then
  147.       -- ricavo quale nota √® stata scelta
  148.       if tasto <> "" then
  149.         set nota = getProp(keyNoteList,tasto)
  150.         -- ricavo l'ottava
  151.         set oct = ((findPos(keyNoteList,tasto)-1)/count(scaleList))+1
  152.         
  153.         set notaOct = nota & oct
  154.         
  155.         set Gnota = "y" & nota
  156.         -- non √® in play, si accende
  157.         if not getPos(synthList,notaOct) then  
  158.           
  159.           -- hilite della nota
  160.           repeat with i = ((oct-1)*12 + 4) to (((oct-1)*12 + 4)+11)
  161.             if the name of member the memberNum of sprite i = nota then
  162.               set the memberNum of sprite i to the number of member Gnota
  163.               updatestage
  164.               exit repeat
  165.             end if
  166.           end repeat
  167.           
  168.           
  169.           -- aggiorno la sequenza
  170.           append synthList,notaOct
  171.           
  172.         else   -- √® in play, si spegne
  173.           
  174.           -- tolgo hilite della nota
  175.           repeat with i = ((oct-1)*12 + 4) to (((oct-1)*12 + 4)+11)
  176.             if the name of member the memberNum of sprite i = Gnota then
  177.               set the memberNum of sprite i to the number of member nota
  178.               updatestage
  179.               exit repeat
  180.             end if
  181.           end repeat
  182.           
  183.           deleteAt synthList,getPos(synthList,notaOct)
  184.         end if  
  185.         
  186.         -- se ho tolto l'ultimo nota si spegne il synth
  187.         if synthList = [] then
  188.           set gOnSynth = 0
  189.           IKSynthStop
  190.         else
  191.           if not gOnSynth then set gOnSynth = 1  
  192.           -- aggiorno il play 
  193.           -- calcolo arp
  194.           case(getPos(arpList,gArp)) of
  195.             1,2,3,4:set arp = integer(chars(gArp,3,length(gArp)))/4
  196.             otherwise
  197.               set arp = 4
  198.           end case 
  199.           
  200.           -- vol e pan
  201.           IKSynthVolume integer(128*(-gPosVolSynth+54)/45)
  202.           IKSynthPan integer(128*(-gPosPanSynth+54)/45)
  203.           IKSynthArp getPos(progList,gProg)-1,arp,createSeq()
  204.         end if
  205.         
  206.         -- se c'√® l'hilite intorno ai marker sparisce
  207.         if gSynthSel then 
  208.           set the locH of sprite 74 to -20
  209.           set gSynthSel = 0
  210.         end if
  211.       end if
  212.     end if
  213.     
  214.   else
  215.     -- tasti per le schermate principali
  216.     tell the stage 
  217.       put the frame into numFrame
  218.       case(numFrame) of
  219.         2,3:      -- CLICK PER IL GROOVE
  220.           
  221.           case(the keyPressed) of
  222.             "a":       -- click su mem
  223.               -- se c'√® un marker con hilite allora non funziona
  224.               put chars(the name of member(the memberNum of sprite 12),2,length(the name of member(the memberNum of sprite 12))) into temp
  225.               if not integerP(integer(temp)) then
  226.                 set the memberNum of sprite 13 to the number of member "Hmarker"
  227.                 set the loc of sprite 13 to point (51,240)
  228.                 updateStage
  229.                 --clickMarker 
  230.               end if
  231.           end case
  232.           
  233.           case(the keyCode) of
  234.             25,29:           -- click su 9 (non del tastierino numerico) <-> diminuisce il bpm di 1
  235.               -- click su 0 (non del tastierino numerico) <-> aumenta il bpm di 1
  236.               put field "fieldBpm" into bpm
  237.               if (the keyCode = 25) and (bpm > (4*gBpmSong/5+1)) then 
  238.                 set bpm = bpm - 1
  239.                 IKmixBpm bpm
  240.               end if
  241.               if (the keyCode = 29) and (bpm < (6*gBpmSong/5-1)) then 
  242.                 set bpm = bpm + 1
  243.                 IKMixBpm bpm
  244.               end if
  245.               -- aggiorno il campo
  246.               put bpm into field"fieldBpm"
  247.               set the font of member "fieldBpm" to "GMFont"
  248.               set the foreColor of member "fieldBpm" to 54
  249.               -- aggiorno il pallino del bpm
  250.               set the locH of sprite 24 = 15*25*(bpm-gBpmSong)/gBpmSong+321
  251.               set the locV of sprite 24 to 449
  252.               updateStage
  253.               
  254.             49:           -- click su barra spazio <-> pulsante rosso
  255.               puppetSprite 13,true
  256.               set the memberNum of sprite 13 to the number of member "Hred"
  257.               set the loc of sprite 13 to point (320,240)
  258.               updateStage
  259.               
  260.               clickRed  
  261.               -- + e - ***********************
  262.             67:                        -- click su * <-> aumenta volume
  263.               if gTraccia <> 0 then
  264.                 if getAt(stateTrackList,gTraccia) <> "off" then
  265.                   if getAt(volPosList,gTraccia)>168 then
  266.                     setAt volPosList,gTraccia,(getAt(volPosList,gTraccia)-1) 
  267.                     set vol = (128/power(1.022,142))*power(1.022,((-142*the locV of sprite 3)+142+(310*141))/142)+4
  268.                     if integer(vol) = 124 then set vol = 128
  269.                     IKVolume gTraccia,integer(vol)
  270.                     setAt volValList,gTraccia,integer(vol)
  271.                     -- posiziona il controllo volume
  272.                     set the locV of sprite 3 to getAt(volPosList,gTraccia)
  273.                     updateStage
  274.                   end if
  275.                 end if 
  276.               end if
  277.               
  278.             78:                    -- click su - <-> diminuisce volume
  279.               if gTraccia <> 0 then
  280.                 if getAt(stateTrackList,gTraccia) <> "off" then
  281.                   if getAt(volPosList,gTraccia)<310 then
  282.                     setAt volPosList,gTraccia,(getAt(volPosList,gTraccia)+1) 
  283.                     set vol = (128/power(1.022,142))*power(1.022,((-142*the locV of sprite 3)+142+(310*141))/142)-1
  284.                     if integer(vol) = 5 then set vol = 0
  285.                     IKVolume gTraccia,integer(vol)
  286.                     setAt volValList,gTraccia,integer(vol)
  287.                     -- posiziona il controllo volume
  288.                     set the locV of sprite 3 to getAt(volPosList,gTraccia)
  289.                     updateStage
  290.                   end if
  291.                 end if 
  292.               end if
  293.               -- *****************************
  294.               
  295.               -- FRECCE **********************
  296.             125:                    -- click sulla freccia down <-> click su un fileAudio
  297.               if gTraccia <> 0 then
  298.                 -- controllo se questa traccia √® gi√† impegnata
  299.                 
  300.                 case(getAt(virTrackList,gTraccia)) of
  301.                   -1:          -- la traccia √® libera
  302.                     set numLine = random(the lineCount of member "fieldAudio")
  303.                   otherwise            -- la traccia √® gi√† impegnata
  304.                     -- se l'ho trovato nell'ultima linea del field vado alla linea 1
  305.                     if getAt(virTrackList,gTraccia) = the lineCount of member "fieldAudio" then
  306.                       set numLine = 1
  307.                     else
  308.                       set numLine = getAt(virTrackList,gTraccia)
  309.                     end if
  310.                 end case
  311.                 
  312.                 -- se la linea scelta √® gi√† impegnata passo alla linea successiva
  313.                 repeat while getOne(virTrackList,numLine)
  314.                   set numLine = numLine + 1
  315.                   if numLine = (the lineCount of member "fieldAudio" + 1) then set numLine = 1
  316.                 end repeat
  317.                 clickNameAudio numLine
  318.                 -- aggiorno la visualizzazione del field "fieldAudio"
  319.                 put the lineCount of member "fieldAudio" /20 into q
  320.                 put the lineCount of member "fieldAudio" mod 20 into r
  321.                 -- abbiamo q+1 pagine se r>0,  q se r=0
  322.                 if r then
  323.                   set numPag = q+1
  324.                 else
  325.                   set numPag = q
  326.                 end if 
  327.                 if numLine mod 20 = 1 then       -- ho cambiato pagina
  328.                   if gPag = numPag then    -- sono gi√† nell'ultima pagina
  329.                     scrollByLine member "fieldAudio",-20*(numPag-1)
  330.                     set gPag = 1
  331.                   else
  332.                     scrollByLine member "fieldAudio",20
  333.                     set gPag = gPag + 1
  334.                   end if
  335.                   -- se la traccia √® gi√† impegnata sono nella pagina giusta altrimenti sono a pagina 1
  336.                 else 
  337.                   -- calcolo in quale pagina √® la numLine              
  338.                   put numLine /20 into q
  339.                   put numLine mod 20 into r
  340.                   -- abbiamo q+1 pagine se r>0,  q se r=0
  341.                   if r then
  342.                     set numPag = q+1
  343.                   else
  344.                     set numPag = q
  345.                   end if 
  346.                   if gPag <> numPag then
  347.                     scrollByLine member "fieldAudio",20*(numPag-1)
  348.                     set gPag = numPag
  349.                   end if
  350.                 end if 
  351.               end if
  352.               
  353.             126:                    -- click sulla freccia up <-> click su un fileAudio  
  354.               if gTraccia <> 0 then 
  355.                 
  356.                 -- controllo se questa traccia √® gi√† impegnata
  357.                 
  358.                 case(getAt(virTrackList,gTraccia)) of
  359.                   -1:          -- la traccia √® libera
  360.                     set numLine = random(the lineCount of member "fieldAudio")
  361.                   otherwise            -- la traccia √® gi√† impegnata
  362.                     -- se l'ho trovato nella prima linea del field vado all'ultima
  363.                     if getAt(virTrackList,gTraccia) = 1 then
  364.                       set numLine = the lineCount of member "fieldAudio"
  365.                     else
  366.                       set numLine = getAt(virTrackList,gTraccia)
  367.                     end if
  368.                 end case
  369.                 
  370.                 -- se la linea scelta √® gi√† impegnata passo alla linea successiva
  371.                 repeat while getOne(virTrackList,numLine)
  372.                   set numLine = numLine - 1
  373.                   if numLine = 0 then set numLine = the lineCount of member "fieldAudio"
  374.                 end repeat
  375.                 
  376.                 clickNameAudio numLine
  377.                 
  378.                 -- aggiorno la visualizzazione del field "fieldAudio"
  379.                 put the lineCount of member "fieldAudio" /20 into q
  380.                 put the lineCount of member "fieldAudio" mod 20 into r
  381.                 -- abbiamo q+1 pagine se r>0,  q se r=0
  382.                 if r then
  383.                   set numPag = q+1
  384.                 else
  385.                   set numPag = q
  386.                 end if 
  387.                 -- calcolo in quale pagina √® la numLine              
  388.                 put numLine /20 into q
  389.                 put numLine mod 20 into r
  390.                 -- abbiamo q+1 pagine se r>0,  q se r=0
  391.                 if r then
  392.                   set pag = q+1
  393.                 else
  394.                   set pag = q
  395.                 end if 
  396.                 
  397.                 if gPag > pag then
  398.                   scrollByLine member "fieldAudio",-20*(gPag-pag)
  399.                   set gPag = pag
  400.                 else
  401.                   if gPag < pag then
  402.                     scrollByLine member "fieldAudio",20*(pag-gPag)
  403.                     set gPag = pag
  404.                   end if
  405.                 end if
  406.               end if
  407.               
  408.             124:                    -- click sulla freccia right <-> click su nextLoop
  409.               -- funziona solo se non siamo sull'ultima pagina del field "fieldAudio"
  410.               put the lineCount of member "fieldAudio" /20 into q
  411.               put the lineCount of member "fieldAudio" mod 20 into r
  412.               -- abbiamo q+1 pagine se r>0,  q se r=0
  413.               if r then
  414.                 set numPag = q+1
  415.               else
  416.                 set numPag = q
  417.               end if 
  418.               
  419.               if gPag <> numPag then
  420.                 scrollByLine member "fieldAudio",20
  421.                 set gPag = gPag + 1
  422.               else
  423.                 scrollByLine member "fieldAudio",-20*(numPag-1)
  424.                 set gPag = 1
  425.               end if 
  426.               
  427.             123:                    -- click sulla freccia left <-> click su prevLoop
  428.               -- funziona solo se non siamo sulla prima pagina del field "fieldAudio"
  429.               if gPag <> 1 then
  430.                 scrollByLine member "fieldAudio",-20
  431.                 set gPag = gPag - 1
  432.               else
  433.                 -- conto quante pagine abbiamo
  434.                 put the lineCount of member "fieldAudio" /20 into q
  435.                 put the lineCount of member "fieldAudio" mod 20 into r
  436.                 -- abbiamo q+1 pagine se r>0,  q se r=0
  437.                 if r then
  438.                   set numPag = q+1
  439.                 else
  440.                   set numPag = q
  441.                 end if 
  442.                 
  443.                 scrollByLine member "fieldAudio",20*(numPag-1)
  444.                 set gPag = numPag
  445.               end if 
  446.               -- *****************************
  447.               
  448.               -- RANDOM **********************
  449.             115,116,119,121:                                     
  450.               -- click su beginLine (115) <-> perc
  451.               -- click su endLine (119) <-> mild
  452.               -- click su pageUp (116) <-> inst
  453.               -- click su pageDown (121) <-> random
  454.               set gTraccia = 0   
  455.               puppetSprite 12,true      
  456.               -- posiziona il pulsante del volume e del pan
  457.               set the loc of sprite 3 = point(529,239)
  458.               set the loc of sprite 4 = point(543,239)
  459.               -- si vuota il field "fieldAudio"
  460.               repeat with i = 1 to 8
  461.                 if getAt(virTrackList,i) <> -1 then put "√†√†" into word 1 of line getAt(virTrackList,i) of field "fieldAudio"
  462.               end repeat
  463.               scrollByLine member "fieldAudio",-20*(the lineCount of member "fieldAudio"/20)
  464.               set gPag = 1
  465.               
  466.               -- aggiorno la tempList
  467.               if virTrackList <> [-1,-1,-1,-1,-1,-1,-1,-1] then
  468.                 repeat with i = 1 to 8
  469.                   setAt tempList,i,getAt(virTrackList,i)
  470.                 end  repeat
  471.               end if
  472.               set virTrackList = [-1,-1,-1,-1,-1,-1,-1,-1]
  473.               
  474.               case(the keyCode) of
  475.                 115: 
  476.                   set gRandom = "perc"
  477.                   set the memberNum of sprite 12 to the number of member "Hperc"
  478.                   set the  ink of sprite 12 to 36
  479.                   set the loc of sprite 12 = point(218,17)
  480.                 116: 
  481.                   set gRandom = "inst"
  482.                   set the memberNum of sprite 12 to the number of member "Hinst"
  483.                   set the  ink of sprite 12 to 36
  484.                   set the loc of sprite 12 = point(184,34)
  485.                 119: 
  486.                   set gRandom = "mild"
  487.                   set the memberNum of sprite 12 to the number of member "Hmild"
  488.                   set the  ink of sprite 12 to 36
  489.                   set the loc of sprite 12 = point(128,79)
  490.                 121: 
  491.                   set gRandom = "rand"
  492.                   set the memberNum of sprite 12 to the number of member "Hrand"
  493.                   set the  ink of sprite 12 to 36
  494.                   set the loc of sprite 12 = point(156,55)
  495.               end case
  496.               
  497.               updateStage 
  498.               playRandom 
  499.               -- *****************************
  500.           end case
  501.         6,7:       -- CLICK PER IL SEQ
  502.           
  503.           case(the keyCode) of 
  504.             25,29:           -- click su 9 (non del tastierino numerico) <-> diminuisce il bpm di 1
  505.               -- click su 0 (non del tastierino numerico) <-> aumenta il bpm di 1
  506.               put field "fieldBpm" into bpm
  507.               if (the keyCode = 25) and (bpm > (4*gBpmSong/5+1)) then 
  508.                 set bpm = bpm - 1
  509.                 IKmixBpm bpm
  510.               end if
  511.               if (the keyCode = 29) and (bpm < (6*gBpmSong/5-1)) then 
  512.                 set bpm = bpm + 1
  513.                 IKMixBpm bpm
  514.               end if
  515.               -- aggiorno il campo
  516.               put bpm into field"fieldBpm"
  517.               set the font of member "fieldBpm" to "GMFont"
  518.               set the foreColor of member "fieldBpm" to 54
  519.               -- aggiorno il pallino del bpm
  520.               set the locH of sprite 24 = 15*(100*(bpm-gBpmSong)/gBpmSong+52)/4 + 5
  521.               set the locV of sprite 24 to 362
  522.               updateStage
  523.             49:                                   -- click su barra spazio <-> start/stop
  524.               set the memberNum of sprite 36 to the number of member "HredSeq"
  525.               set the ink of sprite 36 to 36
  526.               updateStage
  527.           end case
  528.           
  529.         10,11:       -- CLICK PER IL VMIX
  530.           
  531.           case(the keyCode) of   
  532.             25,29:           -- click su 9 (non del tastierino numerico) <-> diminuisce il bpm di 1
  533.               -- click su 0 (non del tastierino numerico) <-> aumenta il bpm di 1
  534.               put field "fieldBpm" into bpm
  535.               if (the keyCode = 25) and (bpm > (4*gBpmSong/5+1)) then 
  536.                 set bpm = bpm - 1
  537.                 IKmixBpm bpm
  538.               end if
  539.               if (the keyCode = 29) and (bpm < (6*gBpmSong/5-1)) then 
  540.                 set bpm = bpm + 1
  541.                 IKMixBpm bpm
  542.               end if
  543.               -- aggiorno il campo
  544.               put bpm into field"fieldBpm"
  545.               set the font of member "fieldBpm" to "GMFont"
  546.               set the foreColor of member "fieldBpm" to 54
  547.               -- aggiorno il pallino del bpm
  548.               set the locH of sprite 24 = 15*25*(bpm-gBpmSong)/gBpmSong+321
  549.               set the locV of sprite 24 to 341
  550.               updateStage
  551.             49:            -- click su barra spazio <-> start/stop
  552.               if IKGetCurrentBeat() <> -1 then
  553.                 -- si accende l'hilite intorno al pulsante
  554.                 set the memberNum of sprite 36 to the number of member "HredMix"
  555.               end if
  556.           end case
  557.           
  558.       end case
  559.     end tell
  560.   end if
  561. end
  562.  
  563. -----------------------------------------------------------------------
  564.  
  565. on keyUp
  566.   global gOn,gTraccia,gSolo
  567.   global folderSynthList,synthList
  568.   
  569.   if the keyCode = 24 then markSynth    -- marca il synth
  570.   
  571.   case(the keyPressed) of
  572.     ";":  -- vuota la tastiera
  573.       if gOn and (folderSynthList <> []) and not(the visible of window "help") then
  574.         -- se c'√® il fieldElencoSynthSalvati aperto si chiude e non prende il click
  575.         if the visible of sprite 76 then
  576.           pass
  577.         else
  578.           if synthList <> [] then
  579.             emptySynth
  580.           end if
  581.         end if
  582.       end if
  583.       
  584.     ":": clickLed
  585.       
  586.     otherwise
  587.       
  588.       -- tasti per le schermate principali
  589.       tell the stage 
  590.         put the frame into numFrame
  591.         case(numFrame) of
  592.           2,3:      -- CLICK PER IL GROOVE
  593.             
  594.             -- the keyPressed : This system property gives the character assigned to the key that was last pressed
  595.             
  596.             case(the keyPressed) of
  597.               "a":                -- click su m <-> pulsante marker 
  598.                 -- se c'√® un marker con hilite allora non funziona
  599.                 put chars(the name of member(the memberNum of sprite 12),2,length(the name of member(the memberNum of sprite 12))) into temp
  600.                 if not integerP(integer(temp)) then clickMarker
  601.                 
  602.               "q":  -- click su q <-> solo
  603.                 set gSolo = not gSolo
  604.                 puppetSprite 11,true
  605.                 clickSolo
  606.                 
  607.               "w":  -- click su w <-> mute,play
  608.                 if gTraccia <> 0 and gOn then
  609.                   -- memorizzo il numero del controlTrack cliccato
  610.                   set spriteNum = 40 + gTraccia
  611.                   set traccia = spriteNum - 40
  612.                   
  613.                   clickControlTrack traccia, spriteNum
  614.                 end if 
  615.             end case
  616.             
  617.             -- the keyCode : This keyboard code is the key's numerical value, not the ANSI value
  618.             
  619.             case(the keyCode) of
  620.                 
  621.                 -- TRACCE **********************
  622.               83,84,85,86,87,88,89:                    -- click su 1..7 <-> traccia 1..traccia 7
  623.                 set gTraccia = the keyCode - 82
  624.                 puppetSprite 12,true
  625.                 if gSolo and getAt(stateTrackList,gTraccia) <> "off" then clickControlTrack gTraccia, 40 + gTraccia
  626.                 clickTrack
  627.                 
  628.               91:                                      -- click su 8 <-> traccia 8
  629.                 set gTraccia = 8
  630.                 puppetSprite 12,true
  631.                 if gSolo and getAt(stateTrackList,8) <> "off" then clickControlTrack 8, 48
  632.                 clickTrack
  633.                 -- *****************************
  634.                 
  635.             end case
  636.             
  637.           6,7:       -- CLICK PER IL SEQ
  638.             
  639.             case(the keyCode) of           
  640.               49:                                   -- click su barra spazio <-> start/stop
  641.                 --          if IKGetCurrentBeat() <> -1 then
  642.                 -- si spegne l'hilite intorno al pulsante
  643.                 set the memberNum of sprite 36 to the number of member "redButton"
  644.                 set the ink of sprite 36 to 8
  645.                 updateStage
  646.                 -- aggiorno il fieldState
  647.                 put "" into field  "fieldState"
  648.                 clickRedSeq
  649.                 --          end if
  650.             end case
  651.             
  652.           10,11:       -- CLICK PER IL VMIX
  653.             
  654.             case(the keyCode) of           
  655.               49:            -- click su barra spazio <-> start/stop
  656.                 if IKGetCurrentBeat() <> -1 then
  657.                   -- si spegne l'hilite intorno al pulsante
  658.                   set the memberNum of sprite 36 to the number of member "redMix"
  659.                   updateStage
  660.                   clickRedMix
  661.                 end if
  662.             end case
  663.         end case
  664.       end tell
  665.   end case
  666. end
  667. ****************************************************************
  668. -- funzione che vuota la synthList
  669. on emptySynth
  670.   global gSynthSel,gOnSynth
  671.   global synthList
  672.   
  673.   set the memberNum of sprite 64 to the number of member "empty"
  674.   updateStage
  675.   
  676.   -- se c'√® l'hilite intorno ai marker sparisce
  677.   if gSynthSel then 
  678.     set the locH of sprite 74 to -20
  679.     set gSynthSel = 0
  680.   end if
  681.   
  682.   -- se la nota compare nella synthList si spegne l'hilite del tasto
  683.   repeat with i = 1 to 3    
  684.     set start = 12*(i-1) + 3  -- frame prima dell'inizio di ogni ottava
  685.     repeat with j = 1 to 12
  686.       if char 1 of the name of member the memberNum of sprite (start+j) = "y" then
  687.         set nota = chars(the name of member the memberNum of sprite (start+j),2,length(the name of member the memberNum of sprite (start+j))) & i
  688.         if getPos(synthList,nota) then 
  689.           set nota = chars(nota,1,length(nota)-1)
  690.           set the memberNum of sprite (start+j) to the number of member nota
  691.           updateStage
  692.         end if
  693.       end if
  694.     end repeat
  695.   end repeat
  696.   set synthList = []
  697.   
  698.   IKSynthStop
  699.   set gOnSynth = 0
  700. end 
  701. ****************************************************************
  702. -- clikc sul led rosso 
  703. on clickLed
  704.   global gOn,gArp,gProg,gOnSynth,gPosVolSynth,gPosPanSynth,gSynthSel,gPath,gWav
  705.   global synthList,arpList,progList,folderSynthList
  706.   
  707.   if gOn and (IKGetCurrentBeat() <> -1) and (folderSynthList <> []) and not(the visible of window "help") then
  708.     -- se c'√® il fieldElencoSynthSalvati aperto si chiude e non prende il click
  709.     if the visible of sprite 76 then
  710.       pass
  711.     else
  712.       if gOnSynth then 
  713.         set gOnSynth = 0
  714.         IKSynthStop
  715.       else
  716.         -- √® acceso il led rosso, diventa azzurro solo se ci sono delle note selezionate
  717.         IKSetSynth gPath & "synth:synth" & gWav & ":" & field "fieldSynth" & ":"
  718.         
  719.         if synthList <> [] then
  720.           set the visible of sprite 3 to false
  721.           
  722.           -- aggiorno il play 
  723.           -- calcolo arp
  724.           case(getPos(arpList,gArp)) of
  725.             1,2,3,4:set arp = integer(chars(gArp,3,length(gArp)))/4
  726.             otherwise
  727.               set arp = 4
  728.           end case 
  729.           
  730.           -- vol e pan
  731.           IKSynthVolume integer(128*(-gPosVolSynth+54)/45)
  732.           IKSynthPan integer(128*(-gPosPanSynth+54)/45)
  733.           IKSynthArp getPos(progList,gProg)-1,arp,createSeq()
  734.           set gOnSynth = 1
  735.           
  736.           -- se c'√® l'hilite intorno ai marker sparisce
  737.           if gSynthSel then 
  738.             set the locH of sprite 74 to -20
  739.             set gSynthSel = 0
  740.           end if
  741.         end if
  742.       end if
  743.     end if
  744.   end if
  745. end 
  746.